/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.losalpes.client;

import com.losalpes.persistence.entity.Cliente;
import com.losalpes.persistence.entity.CriterioBusqueda;
import com.losalpes.persistence.entity.Usuario;
import java.util.List;
import javax.ejb.Local;

/**
 * @author Luis Fernando Martinez Moreno
 */
@Local
public interface IClientService {

    /**
     * Crea un cliente
     * @param cliente cliente a actualizar
     */
    void create(Cliente cliente);

    /**
     * Actualiza un cliente
     * @param cliente
     */
    void update(Cliente cliente);

    /**
     * elimina un cliente
     * @param cliente cliente que va a ser eliminado
     * @return true si es exitoso, false en caso contrario
     */
    void eliminarCliente(Cliente cliente);

    /**
     * Obtiene la lista de clientes buscados por un criterio
     * @param cliente cliente
     * @return lista de clientes que cumplen
     */
    List<Cliente> findClientePorCriterio(CriterioBusqueda criterioBusqueda);

    /**
     * Hace la bùsqueda de un cliente por su id
     * @param idCliente id del cliente a buscar
     * @return cliente encontrado, null si no existe
     */
    Cliente findClienteByIdentificacion(String idCliente);

    /**
     * Obtiene la lista de clientes
     * @return lista total de clientes
     */
    List<Cliente> findAll();

    /**
     * Consulta un cliente dado su usuario
     * @param usuario del cliente a buscar
     * @return Cliente que corresponde al usuario
     */
    public Cliente findByUsuario(Usuario usuario);
}
